home *** CD-ROM | disk | FTP | other *** search
/ Delphi Anthology / aDELPHI.iso / Runimage / Delphi50 / Source / Property Editors / adoconed.pas < prev    next >
Pascal/Delphi Source File  |  1999-08-11  |  4KB  |  147 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Visual Component Library         }
  5. {                                                       }
  6. {       Copyright (c) 1999 Inprise Corporation          }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit AdoConEd;
  11.  
  12. {$R-}
  13.  
  14. interface
  15.  
  16. uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
  17.   Forms, Dialogs, Buttons, StdCtrls, Db, ADODB;
  18.  
  19. type
  20.   TConnEditForm = class(TForm)
  21.     OkButton: TButton;
  22.     CancelButton: TButton;
  23.     HelpButton: TButton;
  24.     SourceofConnection: TGroupBox;
  25.     UseDataLinkFile: TRadioButton;
  26.     UseConnectionString: TRadioButton;
  27.     DataLinkFile: TComboBox;
  28.     Browse: TButton;
  29.     ConnectionString: TEdit;
  30.     Build: TButton;
  31.     procedure FormCreate(Sender: TObject);
  32.     procedure HelpButtonClick(Sender: TObject);
  33.     procedure BuildClick(Sender: TObject);
  34.     procedure BrowseClick(Sender: TObject);
  35.     procedure SourceButtonClick(Sender: TObject);
  36.   public
  37.     function Edit(ConnStr: WideString): WideString;
  38.   end;
  39.  
  40. function EditConnectionString(Component: TComponent): Boolean;
  41.  
  42. implementation
  43.  
  44. {$R *.DFM}
  45.  
  46. uses TypInfo, LibHelp, OLEDB, ADOInt, ActiveX, ComObj;
  47.  
  48. const
  49.   SConnectionString = 'ConnectionString';     { Do not localize }
  50.   
  51. function EditConnectionString(Component: TComponent): Boolean;
  52. var
  53.   PropInfo: PPropInfo;
  54.   NewConnStr,
  55.   InitialConnStr: WideString;
  56. begin
  57.   Result := False;
  58.   with TConnEditForm.Create(Application) do
  59.   try
  60.     Caption := Format('%s%s%s %s', [Component.Owner.Name, DotSep,
  61.     Component.Name, SConnectionString]);
  62.     PropInfo := GetPropInfo(Component.ClassInfo, SConnectionString);
  63.     InitialConnStr := GetStrProp(Component, PropInfo);
  64.     NewConnStr := Edit(InitialConnStr);
  65.     if NewConnStr <> InitialConnStr then
  66.     begin
  67.       SetStrProp(Component, PropInfo, NewConnStr);
  68.       Result := True;
  69.     end;
  70.   finally
  71.     Free;
  72.   end;
  73. end;
  74.  
  75. { TConnEditForm }
  76.  
  77. function TConnEditForm.Edit(ConnStr: WideString): WideString;
  78. var
  79.   FileName: string;
  80. begin
  81.   Result := ConnStr;
  82.   UseDataLinkFile.Checked := True;
  83.   if Pos(CT_FILENAME, ConnStr) = 1 then
  84.   begin
  85.     FileName := Copy(ConnStr, Length(CT_FILENAME)+1, MAX_PATH);
  86.     if ExtractFilePath(FileName) = (DataLinkDir + '\') then
  87.       DataLinkFile.Text := ExtractFileName(FileName) else
  88.       DataLinkFile.Text := FileName;
  89.   end else
  90.   begin
  91.     ConnectionString.Text := ConnStr;
  92.     UseConnectionString.Checked := True;
  93.   end;
  94.   SourceButtonClick(nil);
  95.   if ShowModal = mrOk then
  96.     if UseConnectionString.Checked then
  97.       Result := ConnectionString.Text
  98.     else if DataLinkFile.Text <> '' then
  99.     begin
  100.       if ExtractFilePath(DataLinkFile.Text) = '' then
  101.         Result := CT_FILENAME + DataLinkDir + '\' +DataLinkFile.Text else
  102.         Result := CT_FILENAME + DataLinkFile.Text
  103.     end
  104.     else
  105.       Result := '';
  106. end;
  107.  
  108. { Event Handlers }
  109.  
  110. procedure TConnEditForm.FormCreate(Sender: TObject);
  111. begin
  112.   HelpContext := hcDADOConnEdit;
  113.   GetDataLinkFiles(DataLinkFile.Items);
  114. end;
  115.  
  116. procedure TConnEditForm.HelpButtonClick(Sender: TObject);
  117. begin
  118.   Application.HelpContext(HelpContext);
  119. end;
  120.  
  121. procedure TConnEditForm.BrowseClick(Sender: TObject);
  122. begin
  123.   DataLinkFile.Text := PromptDataLinkFile(Handle, DataLinkFile.Text);
  124. end;
  125.  
  126. procedure TConnEditForm.BuildClick(Sender: TObject);
  127. begin
  128.   ConnectionString.Text := PromptDataSource(Handle, ConnectionString.Text);
  129. end;
  130.  
  131. procedure TConnEditForm.SourceButtonClick(Sender: TObject);
  132. const
  133.   EnabledColor: array[Boolean] of TColor = (clBtnFace, clWindow);
  134. begin
  135.   DataLinkFile.Enabled := UseDataLinkFile.Checked;
  136.   DataLinkFile.Color := EnabledColor[DataLinkFile.Enabled];
  137.   Browse.Enabled := DataLinkFile.Enabled;
  138.   ConnectionString.Enabled := UseConnectionString.Checked;
  139.   ConnectionString.Color := EnabledColor[ConnectionString.Enabled];
  140.   Build.Enabled := ConnectionString.Enabled;
  141.   if DataLinkFile.Enabled then
  142.     ActiveControl := DataLinkFile else
  143.     ActiveControl := ConnectionString;
  144. end;
  145.  
  146. end.
  147.